package cn.bailan.mapper;

import cn.bailan.entity.User;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

/**
 * Author:甲粒子
 * Date: 2022/3/29
 * Description：用户 的增查改
 */
@Mapper
public interface UserMapper {
//------------------------------------------------用户基本信息相关---------------------------------------------------
    /**
     * 新增用户
     * @param user 新增的用户
     * @return
     */
    int newUser(User user);

    /**
     * 查询用户是否存在
     * @param openId
     * @return
     */
    int existUser(String openId);

    /**
     * 查询用户userId
     * @param openId
     * @return
     */
    Integer selectUserId(String openId);

    /**
     * 查询用户user
     * @param openId
     * @return
     */
    User selectUser(String openId);

    /**
     * 更新用户信息:nickName
     * @param userId 用户id
     * @param nickName 用户昵称
     * @return
     */
    int setNickName(Integer userId,String nickName);

    /**
     * 更新用户信息:头像
     * @param userId 用户id
     * @param avatar 用户头像
     * @return
     */
    int setAvatar(Integer userId,String avatar);

    /**
     * 更新用户信息: 最近登录时间
     * @param userId 用户id
     * @param rTime 最近登录时间
     * @return
     */
    int setRTime(Integer userId,String rTime);

    /**
     * 更新用户信息
     * @param user 用户
     * @return
     */
    int updateUserInfo(User user);


    /**
     * 获取用户信息
     * @param userId 用户id
     * @return
     */
    User getUserInfo(Integer userId);

    /**
     * 获取用户数量
     * @return
     */
    long countUser();

    /**
     * 获取积分最高前25的用户
     * @return
     */
    List<User> getTop25Good();

    /**
     * 获取积分最低前25的用户
     * @return
     */
    List<User> getTop25Bad();

    /**
     * 分页获取用户信息
     * @param curPage 当前页
     * @param pageSize 页面大小
     * @return
     */
    List<User> getUserList(long curPage, int pageSize);

    /**
     * 更新用户分数
     * @return
     */
    int updateScore(Integer userId,double scoreChange);

    /**
     * 获取用户分数
     * @return
     */
    double getScore(Integer userId);

    /**
     * 重置分数
     * @return
     */
    int  resetScore(Integer userId);

    /**
     * 更新用户连续登录
     * @return
     */
    int inrLoginDays(Integer userId);

    /**
     * 重置用户连续登录
     * @return
     */
    int resetLoginDays(Integer userId);

    /**
     * 获取最近登录时间
     * @return
     */
    String getRTime(Integer userId);

    /**
     * 获取一条鼓励的话
     * @return
     */
    String getInspiration();

}
